Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Raw • Download


meshchatx/src/frontend/components/call/CallOverlay.vue 8048cae830becdc5e65408f25f0fb17729f568d7 (8048cae8) Text, 14.47 KB

Tb4b4b4<Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3activeCallTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"fixed bottom-4 right-4 z-[100] w-72 bg-white dark:bg-zinc-900 rounded-2xl shadow-2xl border border-gray-200 dark:border-zinc-800 overflow-hidden transition-all duration-300"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4{ Ta5d6ff'ring-2 ring-red-500 ring-opacity-50'Tff7b72: Te6edf3isEnded Tb4b4b4}Ta5d6ff"
Tb4b4b4>
T8b949e<!-- Header -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-3 flex items-center bg-gray-50 dark:bg-zinc-800/50 border-b border-gray-100 dark:border-zinc-800"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1 flex items-center space-x-2"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"size-2 rounded-full"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3isEnded Tff7b72|| Te6edf3wasDeclined Tff7b72? Ta5d6ff'bg-red-500' Tff7b72: Ta5d6ff'bg-green-500 animate-pulse'Ta5d6ff"
Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-[10px] font-bold text-gray-500 dark:text-zinc-400 uppercase tracking-wider"Tb4b4b4>
Tff7b72{{
Te6edf3wasDeclined
Tff7b72? Te6edf3$tTb4b4b4(Ta5d6ff"call.call_declined"Tb4b4b4)
Tff7b72: Te6edf3isEnded
Tff7b72? Te6edf3$tTb4b4b4(Ta5d6ff"call.call_ended"Tb4b4b4)
Tff7b72: Te6edf3activeCallTb4b4b4.Te6edf3is_voicemail
Tff7b72? Te6edf3$tTb4b4b4(Ta5d6ff"call.recording_voicemail"Tb4b4b4)
Tff7b72: Te6edf3activeCallTb4b4b4.Te6edf3status Tff7b72=== T79c0ff6
Tff7b72? Te6edf3$tTb4b4b4(Ta5d6ff"call.active_call"Tb4b4b4)
Tff7b72: Te6edf3$tTb4b4b4(Ta5d6ff"call.call_status"Tb4b4b4)
Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3isEndedTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"p-1 hover:bg-gray-200 dark:hover:bg-zinc-700 rounded-lg transition-colors"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3isMinimized Tff7b72= Tff7b72!Te6edf3isMinimizedTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Tb4b4b4:Te6edf3icon-nameTff7b72=Ta5d6ff"Te6edf3isMinimized Tff7b72? Ta5d6ff'chevron-up' Tff7b72: Ta5d6ff'chevron-down'Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"size-4 text-gray-500"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div Te6edf3v-showTff7b72=Ta5d6ff"Tff7b72!Te6edf3isMinimizedTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"p-4"Tb4b4b4>
T8b949e<!-- icon and name -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-col items-center mb-4"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"p-4 rounded-full mb-3"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"
Te6edf3isEnded Tff7b72|| Te6edf3wasDeclined Tff7b72? Ta5d6ff'bg-red-100 dark:bg-red-900/30' Tff7b72: Ta5d6ff'bg-blue-100 dark:bg-blue-900/30'
Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72LxmfUserIcon
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3activeCallTb4b4b4.Te6edf3remote_iconTa5d6ff"
Tb4b4b4:Te6edf3icon-nameTff7b72=Ta5d6ff"Te6edf3activeCallTb4b4b4.Te6edf3remote_iconTb4b4b4.Te6edf3icon_nameTa5d6ff"
Tb4b4b4:Te6edf3icon-foreground-colourTff7b72=Ta5d6ff"Te6edf3activeCallTb4b4b4.Te6edf3remote_iconTb4b4b4.Te6edf3foreground_colourTa5d6ff"
Tb4b4b4:Te6edf3icon-background-colourTff7b72=Ta5d6ff"Te6edf3activeCallTb4b4b4.Te6edf3remote_iconTb4b4b4.Te6edf3background_colourTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"size-8"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Te6edf3v-else
Te6edf3icon-nameTff7b72=Ta5d6ff"account"
Te6edf3classTff7b72=Ta5d6ff"size-8"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"
Te6edf3isEnded Tff7b72|| Te6edf3wasDeclined
Tff7b72? Ta5d6ff'text-red-600 dark:text-red-400'
Tff7b72: Ta5d6ff'text-blue-600 dark:text-blue-400'
Ta5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-center w-full min-w-0"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"font-bold text-gray-900 dark:text-white truncate px-2"Tb4b4b4>
Tff7b72{{ Te6edf3activeCallTb4b4b4.Te6edf3remote_identity_name Tff7b72|| Te6edf3$tTb4b4b4(Ta5d6ff"call.unknown"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-[10px] text-gray-500 dark:text-zinc-500 font-mono truncate px-4"Tb4b4b4>
Tff7b72{{
Te6edf3activeCallTb4b4b4.Te6edf3remote_identity_hash
Tff7b72? Te6edf3formatDestinationHashTb4b4b4(Te6edf3activeCallTb4b4b4.Te6edf3remote_identity_hashTb4b4b4)
Tff7b72: Ta5d6ff""
Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- Status -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-center mb-6"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"text-sm font-medium"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4[
Te6edf3isEnded Tff7b72|| Te6edf3wasDeclined
Tff7b72? Ta5d6ff'text-red-600 dark:text-red-400 animate-pulse'
Tff7b72: Te6edf3activeCallTb4b4b4.Te6edf3status Tff7b72=== T79c0ff6
Tff7b72? Ta5d6ff'text-green-600 dark:text-green-400'
Tff7b72: Ta5d6ff'text-gray-600 dark:text-zinc-400'Tb4b4b4,
Tb4b4b4]Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3wasDeclinedTa5d6ff"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"call.call_declined"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3v-else-ifTff7b72=Ta5d6ff"Te6edf3isEndedTa5d6ff"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"call.call_ended"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3v-else-ifTff7b72=Ta5d6ff"Te6edf3activeCallTb4b4b4.Te6edf3is_incoming Tff7b72&& Te6edf3activeCallTb4b4b4.Te6edf3status Tff7b72=== T79c0ff4Ta5d6ff"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"call.incoming_call"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3v-else-ifTff7b72=Ta5d6ff"Te6edf3activeCallTb4b4b4.Te6edf3status Tff7b72=== T79c0ff0Ta5d6ff"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"call.busy"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3v-else-ifTff7b72=Ta5d6ff"Te6edf3activeCallTb4b4b4.Te6edf3status Tff7b72=== T79c0ff1Ta5d6ff"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"call.rejected"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3v-else-ifTff7b72=Ta5d6ff"Te6edf3activeCallTb4b4b4.Te6edf3status Tff7b72=== T79c0ff2Ta5d6ff"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"call.calling"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3v-else-ifTff7b72=Ta5d6ff"Te6edf3activeCallTb4b4b4.Te6edf3status Tff7b72=== T79c0ff3Ta5d6ff"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"call.available"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3v-else-ifTff7b72=Ta5d6ff"Te6edf3activeCallTb4b4b4.Te6edf3status Tff7b72=== T79c0ff4Ta5d6ff"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"call.ringing"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3v-else-ifTff7b72=Ta5d6ff"Te6edf3activeCallTb4b4b4.Te6edf3status Tff7b72=== T79c0ff5Ta5d6ff"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"call.connecting"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3v-else-ifTff7b72=Ta5d6ff"Te6edf3activeCallTb4b4b4.Te6edf3status Tff7b72=== T79c0ff6Ta5d6ff"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"call.connected"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3v-elseTb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"call.status"Tb4b4b4) Tff7b72}}: Tff7b72{{ Te6edf3activeCallTb4b4b4.Te6edf3status Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- Stats (only when connected and not minimized) -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3activeCallTb4b4b4.Te6edf3status Tff7b72=== T79c0ff6 Tff7b72&& Tff7b72!Te6edf3isEndedTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"mb-4 p-2 bg-gray-50 dark:bg-zinc-800/50 rounded-lg text-[10px] text-gray-500 dark:text-zinc-400 grid grid-cols-2 gap-1"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center space-x-1"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"arrow-up" Te6edf3classTff7b72=Ta5d6ff"size-3" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Tff7b72{{ Te6edf3formatBytesTb4b4b4(Te6edf3activeCallTb4b4b4.Te6edf3tx_bytes Tff7b72|| T79c0ff0Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center space-x-1"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"arrow-down" Te6edf3classTff7b72=Ta5d6ff"size-3" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Tff7b72{{ Te6edf3formatBytesTb4b4b4(Te6edf3activeCallTb4b4b4.Te6edf3rx_bytes Tff7b72|| T79c0ff0Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- Controls -->
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3isEndedTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"flex justify-center space-x-3"Tb4b4b4>
T8b949e<!-- Mute Mic -->
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3isMicMuted Tff7b72? Ta5d6ff'Unmute Mic' Tff7b72: Ta5d6ff'Mute Mic'Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"p-3 rounded-full transition-all duration-200"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"
Te6edf3isMicMuted
Tff7b72? Ta5d6ff'bg-red-500 text-white shadow-lg shadow-red-500/30'
Tff7b72: Ta5d6ff'bg-gray-100 dark:bg-zinc-800 text-gray-600 dark:text-zinc-300 hover:bg-gray-200 dark:hover:bg-zinc-700'
Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3toggleMicrophoneTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Tb4b4b4:Te6edf3icon-nameTff7b72=Ta5d6ff"Te6edf3isMicMuted Tff7b72? Ta5d6ff'microphone-off' Tff7b72: Ta5d6ff'microphone'Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"size-6" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>

T8b949e<!-- Mute Speaker -->
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3isSpeakerMuted Tff7b72? Ta5d6ff'Unmute Speaker' Tff7b72: Ta5d6ff'Mute Speaker'Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"p-3 rounded-full transition-all duration-200"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"
Te6edf3isSpeakerMuted
Tff7b72? Ta5d6ff'bg-red-500 text-white shadow-lg shadow-red-500/30'
Tff7b72: Ta5d6ff'bg-gray-100 dark:bg-zinc-800 text-gray-600 dark:text-zinc-300 hover:bg-gray-200 dark:hover:bg-zinc-700'
Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3toggleSpeakerTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Tb4b4b4:Te6edf3icon-nameTff7b72=Ta5d6ff"Te6edf3isSpeakerMuted Tff7b72? Ta5d6ff'volume-off' Tff7b72: Ta5d6ff'volume-high'Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"size-6" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>

T8b949e<!-- Hangup -->
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"
Te6edf3activeCallTb4b4b4.Te6edf3is_incoming Tff7b72&& Te6edf3activeCallTb4b4b4.Te6edf3status Tff7b72=== T79c0ff4
Tff7b72? Te6edf3$tTb4b4b4(Ta5d6ff'call.decline_call'Tb4b4b4)
Tff7b72: Te6edf3$tTb4b4b4(Ta5d6ff'call.hangup_call'Tb4b4b4)
Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"p-3 rounded-full bg-red-600 text-white hover:bg-red-700 shadow-lg shadow-red-600/30 transition-all duration-200"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3hangupCallTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"phone-hangup" Te6edf3classTff7b72=Ta5d6ff"size-6 rotate-[135deg]" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>

T8b949e<!-- Send to Voicemail (if incoming) -->
Tb4b4b4<Tff7b72button
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3activeCallTb4b4b4.Te6edf3is_incoming Tff7b72&& Te6edf3activeCallTb4b4b4.Te6edf3status Tff7b72=== T79c0ff4Ta5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"button"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'call.send_to_voicemail'Tb4b4b4)Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"p-3 rounded-full bg-blue-600 text-white hover:bg-blue-700 shadow-lg shadow-blue-600/30 transition-all duration-200"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3sendToVoicemailTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"voicemail" Te6edf3classTff7b72=Ta5d6ff"size-6" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>

T8b949e<!-- Answer (if incoming) -->
Tb4b4b4<Tff7b72button
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3activeCallTb4b4b4.Te6edf3is_incoming Tff7b72&& Te6edf3activeCallTb4b4b4.Te6edf3status Tff7b72=== T79c0ff4Ta5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"button"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'call.answer_call'Tb4b4b4)Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"p-3 rounded-full bg-green-600 text-white hover:bg-green-700 shadow-lg shadow-green-600/30 animate-bounce"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3answerCallTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"phone" Te6edf3classTff7b72=Ta5d6ff"size-6" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- Minimized State -->
Tb4b4b4<Tff7b72div
Te6edf3v-showTff7b72=Ta5d6ff"Te6edf3isMinimized Tff7b72&& Tff7b72!Te6edf3isEndedTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"px-4 py-2 flex items-center justify-between bg-white dark:bg-zinc-900"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center space-x-2 overflow-hidden mr-2 min-w-0"Tb4b4b4>
Tb4b4b4<Tff7b72LxmfUserIcon
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3activeCallTb4b4b4.Te6edf3remote_iconTa5d6ff"
Tb4b4b4:Te6edf3icon-nameTff7b72=Ta5d6ff"Te6edf3activeCallTb4b4b4.Te6edf3remote_iconTb4b4b4.Te6edf3icon_nameTa5d6ff"
Tb4b4b4:Te6edf3icon-foreground-colourTff7b72=Ta5d6ff"Te6edf3activeCallTb4b4b4.Te6edf3remote_iconTb4b4b4.Te6edf3foreground_colourTa5d6ff"
Tb4b4b4:Te6edf3icon-background-colourTff7b72=Ta5d6ff"Te6edf3activeCallTb4b4b4.Te6edf3remote_iconTb4b4b4.Te6edf3background_colourTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"size-5 shrink-0"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3v-else Te6edf3icon-nameTff7b72=Ta5d6ff"account" Te6edf3classTff7b72=Ta5d6ff"size-5 text-blue-500 shrink-0" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-sm font-medium text-gray-700 dark:text-zinc-200 truncate block"Tb4b4b4>
Tff7b72{{ Te6edf3activeCallTb4b4b4.Te6edf3remote_identity_name Tff7b72|| Te6edf3$tTb4b4b4(Ta5d6ff"call.unknown"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center space-x-1"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"p-1.5 hover:bg-gray-100 dark:hover:bg-zinc-800 rounded transition-colors"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3toggleMicrophoneTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Tb4b4b4:Te6edf3icon-nameTff7b72=Ta5d6ff"Te6edf3isMicMuted Tff7b72? Ta5d6ff'microphone-off' Tff7b72: Ta5d6ff'microphone'Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"size-4"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3isMicMuted Tff7b72? Ta5d6ff'text-red-500' Tff7b72: Ta5d6ff'text-gray-400'Ta5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"p-1.5 hover:bg-red-100 dark:hover:bg-red-900/30 rounded transition-colors"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3hangupCallTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"phone-hangup" Te6edf3classTff7b72=Ta5d6ff"size-4 text-red-500 rotate-[135deg]" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>

Tb4b4b4<Tff7b72scriptTb4b4b4>
Tff7b72import Te6edf3MaterialDesignIcon Tff7b72from Ta5d6ff"../MaterialDesignIcon.vue"Tb4b4b4;
Tff7b72import Te6edf3LxmfUserIcon Tff7b72from Ta5d6ff"../LxmfUserIcon.vue"Tb4b4b4;
Tff7b72import Te6edf3Utils Tff7b72from Ta5d6ff"../../js/Utils"Tb4b4b4;
Tff7b72import Te6edf3ToastUtils Tff7b72from Ta5d6ff"../../js/ToastUtils"Tb4b4b4;

Tff7b72export Tff7b72default Tb4b4b4{
Te6edf3nameTff7b72: Ta5d6ff"CallOverlay"Tb4b4b4,
Te6edf3componentsTff7b72: Tb4b4b4{ Te6edf3MaterialDesignIconTb4b4b4, Te6edf3LxmfUserIcon Tb4b4b4}Tb4b4b4,
Te6edf3propsTff7b72: Tb4b4b4{
Te6edf3activeCallTff7b72: Tb4b4b4{
Te6edf3typeTff7b72: Tffa657ObjectTb4b4b4,
Te6edf3requiredTff7b72: Tff7b72trueTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3isEndedTff7b72: Tb4b4b4{
Te6edf3typeTff7b72: Tffa657BooleanTb4b4b4,
Tff7b72defaultTff7b72: Tff7b72falseTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3wasDeclinedTff7b72: Tb4b4b4{
Te6edf3typeTff7b72: Tffa657BooleanTb4b4b4,
Tff7b72defaultTff7b72: Tff7b72falseTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3dataTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{
Te6edf3isMinimizedTff7b72: Tff7b72falseTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3computedTff7b72: Tb4b4b4{
Te6edf3isMicMutedTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3activeCallTff7b72?Tb4b4b4.Te6edf3is_mic_muted Tff7b72?? Tff7b72falseTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3isSpeakerMutedTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3activeCallTff7b72?Tb4b4b4.Te6edf3is_speaker_muted Tff7b72?? Tff7b72falseTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3methodsTff7b72: Tb4b4b4{
Te6edf3formatDestinationHashTb4b4b4(Te6edf3hashTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3UtilsTb4b4b4.Te6edf3formatDestinationHashTb4b4b4(Te6edf3hashTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3formatBytesTb4b4b4(Te6edf3bytesTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3UtilsTb4b4b4.Te6edf3formatBytesTb4b4b4(Te6edf3bytes Tff7b72|| T79c0ff0Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3answerCallTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/telephone/answer"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to answer call"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3hangupCallTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3$emitTb4b4b4(Ta5d6ff"hangup"Tb4b4b4)Tb4b4b4;
Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/telephone/hangup"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to hangup call"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3sendToVoicemailTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/telephone/send-to-voicemail"Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Ta5d6ff"Call sent to voicemail"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to send call to voicemail"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3toggleMicrophoneTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3endpoint Tff7b72= Tff7b72thisTb4b4b4.Te6edf3isMicMuted
Tff7b72? Ta5d6ff"/api/v1/telephone/unmute-transmit"
Tff7b72: Ta5d6ff"/api/v1/telephone/mute-transmit"Tb4b4b4;
Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(Te6edf3endpointTb4b4b4)Tb4b4b4;
T8b949e// eslint-disable-next-line vue/no-mutating-props
Tff7b72thisTb4b4b4.Te6edf3activeCallTb4b4b4.Te6edf3is_mic_muted Tff7b72= Tff7b72!Tff7b72thisTb4b4b4.Te6edf3isMicMutedTb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to toggle microphone"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3toggleSpeakerTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3endpoint Tff7b72= Tff7b72thisTb4b4b4.Te6edf3isSpeakerMuted
Tff7b72? Ta5d6ff"/api/v1/telephone/unmute-receive"
Tff7b72: Ta5d6ff"/api/v1/telephone/mute-receive"Tb4b4b4;
Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(Te6edf3endpointTb4b4b4)Tb4b4b4;
T8b949e// eslint-disable-next-line vue/no-mutating-props
Tff7b72thisTb4b4b4.Te6edf3activeCallTb4b4b4.Te6edf3is_speaker_muted Tff7b72= Tff7b72!Tff7b72thisTb4b4b4.Te6edf3isSpeakerMutedTb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to toggle speaker"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4<Tb4b4b4/Tff7b72scriptTb4b4b4>


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────